﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using log4net;
using Iudicium.Autenticacion;

public partial class MasterPage : System.Web.UI.MasterPage
{

    private static readonly ILog log = LogManager.GetLogger("LogFile");

    protected void Page_Load(object sender, EventArgs e)
    {
        Page.Title = Iudicium.Configuracion.ConfiguracionIudicium.GetApplicationName();
        if (!IsPostBack)
        {
            bool isAuthenticate = Autenticacion.IsAuthenticate();
            PanelMenu.Visible = isAuthenticate;
            ApllySecurityPolicies();
            LoadCssAndScript();

            UserLoggedLiteral.Text = Autenticacion.GetCurrentUserFullName();
            string currentPage = Page.Request.AppRelativeCurrentExecutionFilePath;

            if(!currentPage.Equals("~/FatalError.aspx"))
                Iudicium.Configuracion.ConfiguracionIudicium.VerficicarVersion();

            if (!isAuthenticate && !currentPage.Equals("~/Autenticacion/Login.aspx"))
            {
                Response.Redirect("~/Autenticacion/Login.aspx",true);
            }
            if (isAuthenticate && currentPage.Equals("~/Autenticacion/Login.aspx"))
            {
                Response.Redirect("~/Default.aspx",true);
            }
            
        }
    }

    private void LoadCssAndScript()
    {
        StringBuilder resources = new StringBuilder();

        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/jquery-1.4.3.min.js"));
        resources.Append("\"></script>");

        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/jquery-ui-1.8.4.custom.min.js"));
        resources.Append("\"></script>");
        
        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/coomon.js"));
        resources.Append("\"></script>");

        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/notify.js"));
        resources.Append("\"></script>");

        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/jquery.validate.min.js"));
        resources.Append("\"></script>");

        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/jquery.scrollTo-min.js"));
        resources.Append("\"></script>");

        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/validationGroups.js"));
        resources.Append("\"></script>");

        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/jquery.ui.datepicker-es.js"));
        resources.Append("\"></script>");

        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/jquery.maskedinput-1.2.2.min.js"));
        resources.Append("\"></script>");

        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/jquery.cookie.js"));
        resources.Append("\"></script>");

        resources.Append("<script type=\"text/javascript\" src=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Script/jquery.tipTip.minified.js"));
        resources.Append("\"></script>");

        resources.Append("<link rel=\"shortcut icon\" href=\"");
        resources.Append(VirtualPathUtility.ToAbsolute("~/Images/favicon.ico"));
        resources.Append("\" />");

        CssAndScript.Text = resources.ToString();
    }

    public void ApllySecurityPolicies()
    {
        //Seguridad

        menuRoles.Visible = Autenticacion.TienePermisos("ADMINISTRAR_ROLES");
        menuUsuarios.Visible = Autenticacion.TienePermisos("ADMINISTRAR_USUARIOS");
        menuSeguridad.Visible = menuRoles.Visible || menuUsuarios.Visible;

        //Parametros

        //Parametros - Personas
        menuTipoContactos.Visible = Autenticacion.TienePermisos("ADMINISTRAR_TIPO_CONTACTO");
        menuCargos.Visible = Autenticacion.TienePermisos("ADMINISTRAR_CARGOS");
        menuParametrosPersonas.Visible = menuTipoContactos.Visible || menuCargos.Visible;

        //Parametros - Servicios
        menuTipoProcesos.Visible = Autenticacion.TienePermisos("ADMINISTRAR_TIPO_PROCESO");
        menuEtapasProcesos.Visible = Autenticacion.TienePermisos("ADMINISTRAR_ETAPA_PROCESO");
        menuCategoriasTramites.Visible = Autenticacion.TienePermisos("ADMINISTRAR_CATEGORIA_TRAMITE");
        menuTipoTramites.Visible = Autenticacion.TienePermisos("ADMINISTRAR_TIPO_TRAMITE");
        menuOficinas.Visible = Autenticacion.TienePermisos("ADMINISTRAR_OFICINAS");
        menuParametrosServicios.Visible = menuTipoProcesos.Visible || menuEtapasProcesos.Visible || menuCategoriasTramites.Visible ||
            menuTipoTramites.Visible || menuOficinas.Visible;

        menuParametros.Visible = menuParametrosPersonas.Visible || menuParametrosServicios.Visible;

        //Personas

        menuPersonasNaturales.Visible = Autenticacion.TienePermisos("ADMINISTRAR_PERSONAS_NATURALES");
        menuPersonasJuridicas.Visible = Autenticacion.TienePermisos("ADMINISTRAR_PERSONAS_JURIDICAS");
        menuAdministrativos.Visible = Autenticacion.TienePermisos("ADMINISTRAR_ADMINISTRATIVOS");
        menuPersonas.Visible = menuPersonasNaturales.Visible || menuPersonasJuridicas.Visible || menuAdministrativos.Visible;

        menuReporteUtilidadTramites.Visible = Autenticacion.TienePermisos("VER_REPORTE_UTILIDAD_TRAMITES");
        menuInformes.Visible = menuReporteUtilidadTramites.Visible;
    }
}
